package com.demo.java.OD101_150.OD120;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【整数对最小和】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145716202
 */
public class OdMain {
    // 处理输入数据的核心方法
    private static void solve(String[] array1Str, String[] array2Str, int k) {
        // 创建一个列表存储两个数组中元素的和
        List<Integer> resultList = new ArrayList<>();

        // 双重循环遍历两个输入数组的元素
        for (int i = 0; i < array1Str.length; i++) {
            for (int j = 0; j < array2Str.length; j++) {
                // 获取数组1和数组2的当前元素并转换为整数
                int array1Value = Integer.parseInt(array1Str[i]);
                int array2Value = Integer.parseInt(array2Str[j]);

                // 验证两个值是否符合条件（大于0且小于等于1000）
                if (array1Value <= 0 || array1Value > 1000) {
                    System.out.println("input error");
                    return; // 如果不符合条件，打印错误信息并返回
                }
                if (array2Value <= 0 || array2Value > 1000) {
                    System.out.println("input error");
                    return; // 如果不符合条件，打印错误信息并返回
                }

                // 将两个元素的和添加到 resultList 列表中
                resultList.add(array1Value + array2Value);
            }
        }

        // 对 resultList 进行升序排序
        Collections.sort(resultList);

        // 计算前 k 个最小的元素和
        int result = 0;
        for (int i = 0; i < k; i++) {
            result += resultList.get(i); // 累加前 k 个元素
        }

        // 输出最终结果
        System.out.println(result);
    }

    // 主程序入口
    public static void main(String[] args) {
        try {
            // 创建 Scanner 对象，用于接收用户输入
            Scanner scan = new Scanner(System.in);

            // 读取并处理第一个输入数组，字符串以空格分隔
            String[] array1Str = scan.nextLine().split(" ");
            if (array1Str.length < 0) {
                System.out.println("input error");
                return;
            }

            // 读取并处理第二个输入数组，字符串以空格分隔
            String[] array2Str = scan.nextLine().split(" ");
            if (array2Str.length < 0) {
                System.out.println("input error");
                return;
            }

            // 读取整数 k
            int k = Integer.parseInt(scan.nextLine());

            // 调用核心处理方法
            solve(array1Str, array2Str, k);
        } catch (Exception e) {
            // 捕获所有异常并打印错误信息
            e.printStackTrace();
            System.out.println("input error");
        }
    }
}